package com.zenithmind.coding.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zenithmind.coding.pojo.entity.Problem;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 编程问题Mapper接口 - 遵循接口隔离原则，只包含问题的基本CRUD操作
 *
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Mapper
public interface ProblemMapper extends BaseMapper<Problem> {

    /**
     * 分页查询问题列表
     * 
     * @param page 分页参数
     * @param categoryId 分类ID
     * @param difficulty 难度等级
     * @param type 问题类型
     * @param status 问题状态
     * @param keyword 关键词
     * @param tags 标签列表
     * @return 问题列表
     */
    IPage<Problem> selectProblemPage(Page<Problem> page,
                                    @Param("categoryId") String categoryId,
                                    @Param("difficulty") Integer difficulty,
                                    @Param("type") Integer type,
                                    @Param("status") Integer status,
                                    @Param("keyword") String keyword,
                                    @Param("tags") List<String> tags);



}
